Welcome to pandas!

7.10 分组后的另和中聚合方式

使用agg()函数做分组聚合非常简单直观,用apply()可能稍显复杂,但胜在灵活,以班别为分组依据,合并姓名,并且求语文和数学的均值。


import pandas as pd

df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.7.09 分组进阶应用之分组排名.xlsx")

print (df)

df=pd.DataFrame(df.groupby( "班级" ).apply(lambda d:

{

"名单" :d.姓名.str.cat(sep="、"),

"语文平均值" :d.语文.mean(),

"数学平均值" :d.数学.mean()

}

).to_dict()).T.reset_index().rename(columns={"index" :"班级"})

#.to_dict()是写在apply后面,但在pd.DateFrame里面,而.T是写在pd.DataFrame后面

print (df)

返回:

班级 姓名 语文 数学
0 1班 张三 90 83
1 1班 李四 100 87
2 1班 王五 95 88
3 2班 郭流子 81 97
4 2班 许麻子 92 89
5 3班 宋狗子 89 88
6 3班 小曾 84 84
7 3班 韦大宝 87 94

班级 名单 语文平均值 数学平均值
0 1班 张三、李四、王五 95.0 86.0
1 2班 郭流子、许麻子 86.5 93.0
2 3班 宋狗子、小曾、韦大宝 86.666667 88.666667